Pandas

AI
qwen-3-235b-a22b-instruct-2507
작성자
익명
작성일
2025.08.31
조회수
16
버전
v1

Pandas

Pandas는 파이썬 기반의 강력한 데이터 분석 및 조작 라이브러리로, 데이터학, 통계 분석, 머신러닝 등 다양한 분야에서 널리 사용됩니다. 특히 구조화된 데이터(예: 테이블 형태의 데이터)를 효율적으로 처리하고 분석할 수 있도록 설계되어 있으며, R의 데이터프레임(data.frame) 개념에서 영감을 받아 개발되었습니다. Pandas는 NumPy를 기반으로 하며, 데이터의 읽기, 정제, 변환, 분석, 시각화 전처리 과정에서 핵심적인 역할을 합니다.


개요

Pandas는 2008년 웨스 맥키니(Wes McKinney)에 의해 개발되기 시작했으며, 현재는 오픈소스 프로젝트로 유지보수되고 있습니다. 데이터 과학 워크플로우에서 Pandas는 데이터 수집 후 가장 먼저 사용되는 도구 중 하나로, 데이터 정제(data cleaning), 결측치 처리, 그룹화, 피벗 테이블 생성, 시간 기반 데이터 처리 등 다양한 기능을 제공합니다.

Pandas의 주요 데이터 구조는 다음과 같습니다:

  • Series: 1차원 배열로, 인덱스와 값으로 구성된 데이터 구조.
  • DataFrame: 2차원 테이블 형태의 데이터 구조로, 여러 개의 Series를 열로 가짐. SQL 테이블이나 엑셀 시트와 유사.

주요 기능

1. 데이터 구조

Series

Series는 단일 열의 데이터를 표현합니다. 각 값은 고유한 인덱스(라벨)와 연결됩니다.

import pandas as pd

s = pd.Series([1, 3, 5, 7], index=['a', 'b', 'c', 'd'])
print(s)

DataFrame

DataFrame은 가장 일반적으로 사용되는 구조로, 행과 열로 구성된 표 형태의 데이터를 다룹니다.

df = pd.DataFrame({
    '이름': ['김철수', '이영희', '박민수'],
    '나이': [25, 30, 35],
    '도시': ['서울', '부산', '인천']
})
print(df)

2. 데이터 입출력

Pandas는 다양한 파일 형식에서 데이터를 읽고 쓸 수 있습니다.

형식 읽기 함수 쓰기 함수
CSV [pd.read_csv](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9E%85%EC%B6%9C%EB%A0%A5/pd.read_csv)() [df.to_csv](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9E%85%EC%B6%9C%EB%A0%A5/df.to_csv)()
Excel [pd.read_excel](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9E%85%EC%B6%9C%EB%A0%A5/pd.read_excel)() [df.to_excel](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9E%85%EC%B6%9C%EB%A0%A5/df.to_excel)()
JSON [pd.read_json](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9E%85%EC%B6%9C%EB%A0%A5/pd.read_json)() [df.to_json](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EC%9E%85%EC%B6%9C%EB%A0%A5/df.to_json)()
SQL [pd.read_sql](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/SQL/pd.read_sql)() [df.to_sql](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4/SQL/df.to_sql)()

예:

# CSV 파일 읽기
df = pd.read_csv('data.csv')

# Excel로 저장
df.to_excel('output.xlsx', index=False)

3. 데이터 정제 및 변환

결측치 처리

결측치(NaN)는 데이터 분석에서 흔히 발생하며, Pandas는 이를 쉽게 처리할 수 있습니다.

df.isnull()           # 결측치 여부 확인
df.dropna()           # 결측치가 있는 행 제거
df.fillna(0)          # 결측치를 0으로 대체
df.fillna(method='ffill')  # 이전 값으로 채움 (forward fill)

중복 데이터 제거

df.drop_duplicates()

데이터 타입 변환

df['나이'] = df['나이'].astype(int)
df['날짜'] = pd.to_datetime(df['날짜'])

4. 데이터 탐색 및 요약

Pandas는 데이터의 기본 통계 정보를 빠르게 확인할 수 있는 기능을 제공합니다.

df.head(5)            # 상위 5개 행
df.tail(3)            # 하위 3개 행
df.info()             # 데이터 구조 및 결측치 정보
df.describe()         # 수치형 데이터의 요약 통계
df.shape              # (행 수, 열 수)
df.columns            # 열 이름 목록

5. 데이터 필터링 및 선택

# 조건에 맞는 행 선택
df[df['나이'] > 25]

# 특정 열 선택
df['이름']
df[['이름', '도시']]

# loc: 라벨 기반 선택
df.loc[0, '이름']

# iloc: 위치 기반 선택
df.iloc[0, 1]

6. 그룹화 및 집계

[groupby](/doc/%EA%B8%B0%EC%88%A0/%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B3%BC%ED%95%99/%EA%B7%B8%EB%A3%B9%ED%99%94%20%EB%B0%8F%20%EC%A7%91%EA%B3%84/groupby)()를 사용하여 데이터를 그룹화하고 집계 함수를 적용할 수 있습니다.

df.groupby('도시')['나이'].mean()      # 도시별 평균 나이
df.groupby('도시').agg({'나이': 'mean', '이름': 'count'})

7. 시간 기반 데이터 처리

Pandas는 시계열 데이터(time series) 처리에 매우 강력합니다.

dates = pd.date_range('20230101', periods=6)
ts = pd.Series([1, 2, 3, 4, 5, 6], index=dates)
ts.resample('M').sum()  # 월별 집계


성능 최적화 팁

  • 벡터 연산 사용: 반복문 대신 Pandas의 내장 함수 사용 (예: [apply](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/apply)(), [map](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/Python/map)()).
  • 카테고리 자료형 활용: 반복되는 문자열 데이터는 category 타입으로 변환하여 메모리 절약.
  • chunksize 사용: 대용량 CSV 파일은 청크 단위로 읽기.

for chunk in pd.read_csv('large_file.csv', chunksize=10000):
    process(chunk)


관련 라이브러리

  • NumPy: Pandas의 기반 라이브러리. 수치 연산을 담당.
  • Matplotlib / Seaborn: Pandas 데이터를 시각화할 때 사용.
  • Scikit-learn: Pandas DataFrame을 머신러닝 모델에 입력으로 사용 가능.

참고 자료

Pandas는 데이터 분석의 기본 도구로, 숙련된 데이터 과학자부터 초보자까지 모두 필수적으로 익혀야 할 라이브러리입니다. 지속적인 업데이트와 활발한 커뮤니티 지원을 바탕으로, 데이터 과학 분야에서 오랫동안 중심적인 위치를 차지할 것으로 예상됩니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?